//
//  IsoWorld.h
//  IsoCplus
//
//  Created by 周张林 on 15/9/17.
//
//

#ifndef __IsoCplus__IsoWorld__
#define __IsoCplus__IsoWorld__

#include "IsoScene.h"
#include "cocos2d.h"

class IsoWorld:public IsoObject
{
private:
    Node *_bg ; //背景
    Node* _scenelayer  ; //放iso场景的层
    cocos2d::Vector<IsoScene *> _scenes; //IsoScene数组
    
public:
    
    static IsoWorld* create(unsigned int size,unsigned int gridX,unsigned int gridZ);
    
    ~IsoWorld();
    
    virtual bool init (unsigned int size,unsigned int gridX,unsigned int gridZ);
    
    /**
     *  添加一个iso场景到世界中
     *
     *  @param scene iso场景
     */
    void addScene(IsoScene *scene);
    
    /**
     *  获取所有的iso场景
     *
     *  @return iso场景数组引用
     */
    const cocos2d::Vector<IsoScene *> &getScenes() const;
    
    /**
     *  将scene layer移动到某一个位置，不移动背影
     *
     *  @param x 像素位置x
     *  @param y 像素位置y
     */
    void panSceneLayerTo(float x,float y);
    
    /**
     *  获取场景的偏移值X
     *
     *  @return
     */
    float getSceneOffsetX() const;
    /**
     *  获取场景的偏移值Y
     *
     *  @return
     */
    float getSceneOffsetY() const;
    
    /**
     *  像素坐标到格子坐标的转换
     *
     *  @param px      像素点x
     *  @param py      像素点y
     *  @param offsetX x方向的偏移
     *  @param offsetY y方向的偏移
     *
     *  @return 格子坐标
     */
    cocos2d::Vec2 pixelPointToGrid(float px,float py, float offsetX=0, float offsetY=0);
    
    /**
     *  全局坐标转iso世界坐标，用于计算iso坐标移动缩放过的
     *
     *  @param px
     *  @param py
     *
     *  @return iso世界坐标
     */
    cocos2d::Vec2 globalPointToWorld(float px,float py);
    
    /**
     *  重新设置背景
     *
     *  @param bg 背景
     */
    void setBg(Node *bg);
    
    /**
     *  清除整个世界
     */
    void clearWorld();
};

#endif /* defined(__IsoCplus__IsoWorld__) */
